This invention relates generally to the running of user processes in a computing environment, and more specifically, to methods for monitoring and managing processes.
Unix is a computer operating system originally developed in the 1960s and 1970s that was designed to be portable, multi-tasking and multi-user. The Solaris Operating System is a computer operating system developed by Sun Microsystems and certified as a version of Unix. Solaris includes a graphical user environment, ONC+, plus networking and other enhancements. Linux is a computer operating system and its associated kernel. Unlike some known proprietary operating systems, all of its underlying source code is available to the public and anyone can freely use, modify, and redistribute it. In the narrowest sense, the term Linux refers to the Linux kernel, but it is commonly used to describe entire Unix-like operating systems (also known as GNU/Linux) that are based on the Linux kernel combined with libraries and tools from the GNU Project and other sources. A “Unix-like” operating system is one that behaves in a manner similar to a Unix system, while not necessarily conforming to or being certified to any version of the single UNIX Specification. The term “Unix-like” may include free software/open source operating systems inspired by Unix or designed to emulate its features, commercial and proprietary work-a-likes, and even versions based on the licensed Unix source code (which may be deemed so “Unix-like” that they are certified to bear the “UNIX” trademark).
Multi-tasking, multi-user operating systems (such as Unix, Solaris, Linux and Unix-like operating systems) (hereinafter collectively referred to as “Unix Systems”) typically have varying levels of user access. Two typical user levels of access employed by such multi-tasking, multi-user operating systems are root-level access (or superuser or system administrator) (hereinafter referred to as “root-level access”) and user-level access. A user who has root-level access can perform system administration functions and do many things that a user having user-level access cannot, such as changing the ownership attributes of files and controlling execution of certain applications resident within the system.
One of the privileges that a user with root-level access typically has is to request that a process be automatically started (or restarted) in the event of failure in the execution of the process and upon initialization (or restart) of the operating system. In Unix systems, this can be accomplished by specifying in an initialization file the particular processes to be restarted and the circumstances under which they should be started (or restarted).
However, for certain processes (e.g., applications), it may be desired that this privilege be given to users with user-level access. Existing methods do not provide a way for users with user-level access to manage initialization and execution of processes. Root-level access is intended for a system administrator because of the powerful privileges bestowed upon a user with root-level access. There are existing methods that attempt to provide to a user with user-level access the ability to manage processes. One existing method to manage processes by a user with user-level access is provide instructions to the operating system in the form of a script which includes a running loop that restarts a process upon a certain event (such as termination of the process). However, if the script is terminated for some reason, the script will not ensure that a process always restarts. Another existing method available to a user with user-level access is to set-up an instruction file for the operating system (such as a crontab file in Unix Systems) to restart a process on a periodic basis.
Cron is a Unix and Solaris utility that allows tasks to be automatically run in the background at regular intervals by the cron daemon. These tasks are often termed as cron jobs in Unix and Solaris. Crontab (CRON TABle) is a file which contains the schedule of cron entries to be run and at specified times. However, this method will only cause the restart of a process at a certain time, as indicated in the instructions, and so this method will not always cover the case where the operating system restarts and a process needs to be restarted immediately afterward.